Skip to content

feat: integrate official ROMeo mascot artwork and site favicon - #15

Merged
ClausValcaTD merged 1 commit into
mainfrom
feat/romeo-mascot-artwork
Nov 4, 2026
Merged

ClausValcaTD merged 1 commit into
mainfrom
feat/romeo-mascot-artwork

Conversation

@ClausValcaTD

@ClausValcaTD ClausValcaTD commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

What changed

The official ROMeo mascot art is now used everywhere the storefront previously
fell back to a generic gradient tile or a hand-drawn cartridge icon.

Surface Before After
Favicon / apple-touch favicon.svg romeo-logo.png
Link preview (none) romeo-banner.png (og:image)
Navbar brand inline cartridge SVG romeo-logo.png, 36px
Hero text-only arcade-shop banner beside the tagline
Empty catalog / no search results grey inbox icon romeo-search.png + copy
404 + detail-page not-found grey search/wrench icon romeo-error.png + copy

Asset preparation (this is the part worth reviewing)

The three square icons arrived on a pure-white page with a ~50px margin —
18% of every image. Dropped straight into the zinc-950 storefront they would
have rendered as white tiles.

before                          after
─────────────────────────       ─────────────────────────
  ░░░░░░░░░░░░░░░░░░░            (transparent)
  ░░░  rounded art  ░░░            rounded art
  ░░░░░░░░░░░░░░░░░░░            (transparent)
  1024×1024, ~900 KB              512×512, ~260 KB

Each icon is trimmed, its white background flood-filled to transparency from
the border inward
— a plain "make white transparent" pass would have punched
holes through ROMeo's white eyes and gloves. The anti-aliased edge is then
colour-bled so semi-transparent pixels carry art colour instead of a white
halo, and the result is downscaled to 512px. The banner is capped at 1200px.

Total payload drops from ~4.2 MB to ~1.9 MB.

Files

  • src/layouts/Layout.astro — favicon, apple-touch-icon, og:image + alt
  • src/components/Navbar.astro — romeo-logo.png replaces the cartridge SVG
  • src/pages/index.astro — two-column hero with the banner; both empty states
    (server-rendered catalog-empty and the client-side no-filter-results panel)
    now show romeo-search.png with a Publish an Extension CTA
  • src/pages/404.astro — new; a real 404 route (Astro.response.status = 404)
  • src/pages/plugin/[id].astro, src/pages/publisher/[id].astro — not-found
    fallbacks use romeo-error.png and the bitstream copy

Verification

Check Result
All four PNGs 200 image/png
/404 and both detail-page 404s render romeo-error.png, status 404
Homepage hero + navbar both assets resolve
Client-side empty state renders on a no-match search
npm run build clean
npm test 50/50
tsc --noEmit src/ clean

One judgement call

The detail pages keep two distinct fallbacks: a genuine D1 failure still says
"Plugin/Publisher unavailable" and returns 503, while a missing id says
"Whoops! ROMeo got lost in the bitstream (404)". ROMeo shows on both — only the
heading and status differ, because a database outage is not a wrong URL.


This pull request was created by an AI agent (OpenHands) on behalf of the user.

Summary by CodeRabbit

  • New Features
    • Added a branded not-found page with links to the homepage and catalog.
    • Added banner imagery to the catalog and illustrated empty and no-results states, including a link to publish and an option to clear filters.
  • Style
    • Updated the navbar logo, error-page illustrations, and page layouts.
  • Bug Fixes
    • Added social-sharing image metadata and updated favicon and Apple touch icons.

Replaces the generic gradient/cartridge placeholders with the official ROMeo
mascot art across branding, hero, empty states, and error screens.

Asset prep: the three square icons shipped on a pure-white page with a ~50px
margin, which would have rendered as white tiles on the zinc-950 storefront.
Each is trimmed, its white background flood-filled to transparent from the
border (so interior whites like eyes and gloves survive), colour-bled to avoid
a white halo on the anti-aliased edge, and downscaled to 512px. The banner is
capped at 1200px wide. Total drops from ~4.2MB to ~1.9MB.

- Layout.astro: favicon + apple-touch-icon now point at romeo-logo.png; adds an
  og:image (and alt) pointing at the banner for link previews.
- Navbar.astro: the hand-drawn cartridge SVG is replaced by romeo-logo.png
  (36px, rounded, subtle cyan shadow, scale-up on hover).
- index.astro: the hero becomes a two-column layout with the arcade-shop banner
  beside the tagline, framed by rounded borders and a soft cyan/purple bloom.
  Both empty states (server-rendered catalog-empty and the client-side
  no-filter-results panel) now show romeo-search.png with the "ROMeo couldn't
  find any extensions!" copy and a Publish an Extension CTA.
- 404.astro (new): a real 404 route that sets Astro.response.status = 404 and
  shows romeo-error.png with "Whoops! ROMeo got lost in the bitstream (404)."
  and a Back to Safety button.
- plugin/[id].astro and publisher/[id].astro: their not-found fallbacks swap the
  generic icon for romeo-error.png and the same bitstream copy, while keeping the
  distinct "unavailable" wording for genuine D1 failures (still 503).

Verified against the built worker: all four PNGs serve 200 image/png, /404 and
both detail-page 404s return the error art, the hero banner and navbar logo
resolve, the client-side empty state renders on a no-match search, and
npm run build is clean with npm test at 50/50.

Co-authored-by: openhands <openhands@all-hands.dev>
@coderabbitai

coderabbitai Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Explain Change →

Caution

Review failed

The pull request is closed.

Walkthrough

The change updates shared branding, catalog illustrations and messaging, and not-found page presentations. It adds a non-prerendered 404 route and distinguishes missing plugin or publisher content from database errors.

Changes: Site presentation

Layer / File(s) Summary
Shared branding
src/components/Navbar.astro, src/layouts/Layout.astro
The navbar uses a ROMeo logo image. The layout adds Open Graph image metadata and uses PNG favicon and Apple touch icons.
Catalog presentation
src/pages/index.astro
The hero gains a ROMeo banner. The empty-catalog and no-results states use illustrations, and the no-results state adds explanatory text, a publish link, and a clear-filters button.
Not-found states
src/pages/404.astro, src/pages/plugin/[id].astro, src/pages/publisher/[id].astro
A non-prerendered 404 page sets the response status to 404 and links to the homepage and catalog. Plugin and publisher fallback pages use ROMeo artwork and distinguish not-found headings from database-error headings.

Estimated code review effort: 3 (Moderate) | ~15 minutes

Change: Feature

Possibly related PRs

Suggested reviewers: openhands-agent

Merge Risk: Low · up to 2a973

The PR is broadly mergeable, with low-risk follow-up recommended for accessibility, social previews, image loading, and personalized 404 caching.

- [ ] Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying openrom-store with  Cloudflare Pages  Cloudflare Pages

Latest commit: 2a97376
Status: ✅  Deploy successful!
Preview URL: https://b72919e5.openrom-store.pages.dev
Branch Preview URL: https://feat-romeo-mascot-artwork.openrom-store.pages.dev

View logs

@ClausValcaTD
ClausValcaTD merged commit d307eb6 into main Nov 4, 2026
2 of 3 checks passed
@ClausValcaTD
ClausValcaTD deleted the feat/romeo-mascot-artwork branch November 4, 2026 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants